// 特殊符号校验
export function specialSymbolsRules (rule, value, callback) {
  const pattern = new RegExp("[`~!@#$^&*=|{}':;',\\[\\]<>《》/?~！@#¥……&*|{}【】‘；：”“'。，、？' ']")
  if (pattern.test(value)) {
    callback(new Error('不能输入特殊符号'))
  } else {
    callback()
  }
}
// 纯英文小写校验
export function pureEnglishRules (rule, value, callback) {
  const pattern = /^[a-z]+$/
  if (!pattern.test(value)) {
    callback(new Error('请输入纯英文，支持小写'))
  } else {
    callback()
  }
}

export function contactHotlineTelRules (rule, value, callback) {
  if (value) {
    const pattern = /^[0-9]*$/
    if ((!pattern.test(value))) {
      callback(new Error('客服电话不超过10位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 纯英文大小写校验
export function englishMaxMinRules (rule, value, callback) {
  const pattern = /^[a-zA-Z]+$/
  if (!pattern.test(value)) {
    callback(new Error('请输入纯英文，支持大小写'))
  } else {
    callback()
  }
}
// /手机号校验
export function phoneRules (rule, value, callback) {
  const pattern = /^[1][3-9][0-9]{9}$/
  if ((!pattern.test(value)) && value !== '') {
    callback(new Error('请输入正确的手机号'))
  } else {
    callback()
  }
}
// 手机号和固话
export function phoneRulesOrTel (rule, value, callback) {
  const pattern = /^[1][3-9][0-9]{9}$/
  const patternTel = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/
  if (((!pattern.test(value)) && value !== '') || (!patternTel.test(value) && value !== '')) {
    callback(new Error('请输入手机号码/固话'))
  } else {
    callback()
  }
}

// 邮箱校验
export function emailRules (rule, value, callback) {
  const pattern = /^([a-zA-Z0-9]+[-_.]?)+@[a-zA-Z0-9]+\.[a-z]+$/
  if (!pattern.test(value)) {
    callback(new Error('请输入正确的邮箱'))
  } else {
    callback()
  }
}
// 密码校验
export function passwordRules (rule, value, callback) {
  const pattern = /^[\w_-]+$/
  if (!pattern.test(value)) {
    callback(new Error('密码可输入英文数字非特殊符号'))
  } else {
    callback()
  }
}
// sn号校验
export function snNoRules (rule, value, callback) {
  const pattern = /^[\w_-]+$/
  if (!pattern.test(value)) {
    callback(new Error('SN号为字母及数字组成'))
  } else {
    callback()
  }
}
// 允许输入数字或者带小数点的数
export function numberDecimalsRules (rule, value, callback) {
  const pattern = /^[0-9]+([.]{1}[0-9]+){0,1}$/
  if (!pattern.test(value)) {
    callback(new Error('只允许输入数字(带小数点)'))
  } else {
    callback()
  }
}
// 允许输入0-99的整数或小数
export function numberRules (rule, value, callback) {
  const pattern = /(?:[1-9]\d?|0)(?:.\d{1,2})?$/
  if (!pattern.test(value)) {
    callback(new Error('只允许输入数字(带小数点)'))
  } else {
    callback()
  }
}
// 不允许数字
export function notNumRules (rule, value, callback) {
  const pattern = /^[0-9]+$/
  if (!pattern.test(value)) {
    callback()
  } else {
    callback(new Error('不允许输入数字'))
  }
}
// 保留两位小数
export function numberDecimalsTwoRules (rule, value, callback) {
  const pattern = /^\d+(.\d{1,2})?$/
  if (!pattern.test(value)) {
    callback(new Error('只允许输入整数或者保留两位小数的数值'))
  } else {
    callback()
  }
}
// 全中文检验

export function chineseRules (rule, value, callback) {
  const pattern = /^[\u4e00-\u9fa5]{0,5}$/
  if (!pattern.test(value)) {
    callback(new Error('姓名必须为中文，不超过5个字'))
  } else {
    callback()
  }
}
export function idNumRules (rule, value, callback) {
  const pattern = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  if ((!pattern.test(value)) && value !== '') {
    console.log(1313)
    callback(new Error('请输入正确的身份证号'))
  } else {
    callback()
  }
}
export function idNumRulesNo (rule, value, callback) {
  if (value) {
    const pattern = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
    if ((!pattern.test(value))) {
      callback(new Error('请输入正确的身份证号'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
export function shenqiCodeRules (rule, value, callback) {
  if (value) {
    const pattern = /^[Z][L]\d{3}$/
    if ((!pattern.test(value))) {
      callback(new Error('租赁代码应为ZL+3位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
export function phoneRulesNo (rule, value, callback) {
  if (value) {
    const pattern = /^[1][3-9][0-9]{9}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('请输入正确的手机号'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
export function phoneRulesOrTelNo (rule, value, callback) {
  if (value) {
    const pattern = /^[1][3-9][0-9]{9}$/
    const patternTel = /^\d{3,4}-\d{7,8}$/
    if (((!pattern.test(value)) && value !== '') && (!patternTel.test(value) && value !== '')) {
      callback(new Error('请输入手机号码/固话'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 企业代码
export function numberDecRules (rule, value, callback) {
  if (value) {
    const pattern = /^\d{3}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('企业代码为3位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
export function cabinetNoRules (rule, value, callback) {
  if (value) {
    const pattern = /^[A-Za-z0-9]+$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('电柜编号≤19位数字或字母'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 品牌校验

export function brandNameRules (rule, value, callback) {
  if (value) {
    const pattern = /^[\u4E00-\u9FA5A-Za-z0-9]+$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('品牌名称为中文/英文/数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 型号校验

export function modelRules (rule, value, callback) {
  if (value) {
    const pattern = /^[\u4E00-\u9FA5A-Za-z0-9]+$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('车辆型号为中文/英文/数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 车牌号校验
export function licensePlateRules (rule, value, callback) {
  if (value) {
    const pattern = /^[A-Za-z0-9]{7}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('车牌号为7位数字或字母'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 车牌号校验
export function numRules (rule, value, callback) {
  if (value) {
    const pattern = /^[0-9]*$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('请输入数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 车架号校验
export function chassisNumberRules (rule, value, callback) {
  if (value) {
    const pattern = /^\d{15}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('车架号为15位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 设备编号校验
export function deviceNoRules (rule, value, callback) {
  if (value) {
    const pattern = /^\d{15}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('设备编号由15位数字组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 续航能力校验
export function lifeRules (rule, value, callback) {
  if (value) {
    const pattern = /^\d{2}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('续航能力为2位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// banner权重校验
export function bannerWeight (rule, value, callback) {
  if (value) {
    const pattern = /^[0-9]*$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('权重值为正整数'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// banner跳转链接校验
export function bannerLink (rule, value, callback) {
  if (value) {
    const pattern = /(http|https):\/\/([\w.]+\/?)\S*/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('请输入url或路径地址'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// banner权重校验
export function amountRules (rule, value, callback) {
  if (value) {
    const pattern = /^[0-9]*$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('金额为正整数'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 密码校验
export function passwordsRules (rule, value, callback) {
  if (value) {
    const pattern = /(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^.{6,15}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('6～15位由中文、数字、英文、符号两种或以上组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 字母数字检验
export function socialCreditCodeRules (rule, value, callback) {
  if (value) {
    const pattern = /^[A-Za-z0-9]{18}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('请输入正确的统一社会信用码'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 密码校验
export function passwordsNewRules (rule, value, callback) {
  if (value) {
    const pattern = /(?!^(\d+|[a-zA-Z]+|[~!.,":<>;'/@#$%^&*?]+)$)^[\w~!.,;":'/<>@#$%^&*?]{6,15}$/
    if ((!pattern.test(value)) && value !== '') {
      callback(new Error('密码为6~15位，至少包括字母/数字/符号2种及以上'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 汉字

export function chineseAllRules (rule, value, callback) {
  const pattern = /^[\u4e00-\u9fa5]{0,20}$/
  if (!pattern.test(value)) {
    callback(new Error('只能输入20个字以内汉字'))
  } else {
    callback()
  }
}

// 6位还车码
export function AlsoCarCode (rule, value, callback) {
  const pattern = /^\d{6}$/
  if (!pattern.test(value)) {
    callback(new Error('还车码为六位数字'))
  } else {
    callback()
  }
}
// 6位取车码
export function TakeCarCode (rule, value, callback) {
  const pattern = /^\d{6}$/
  if (!pattern.test(value)) {
    callback(new Error('取车码为六位数字'))
  } else {
    callback()
  }
}
